www.gusucode.com > matlab最优化程序源码---书籍 > matlab最优化程序/光盘程序/第6章 无约束一维极值问题/minTri.m
function [x,minf] = minTri(f,a,b,eps) format long; if nargin == 3 eps = 1.0e-6; end df = diff(f); t0 = (a+b)/2; k = 0; tol = 1; while tol>eps fa = subs(f,findsym(f),a); fb = subs(f,findsym(f),b); dfa = subs(df,findsym(df),a); dfb = subs(df,findsym(df),b); w = 3*(fb - fa)/(b-a) - dfa - dfb; z = sqrt(w^2 - dfa*dfb); t1 = a + (z - dfa - w)*(b-a)/(2*z - dfa + dfb); dft1 = subs(df,findsym(df),t1); tol = abs(dft1); if dft1 < 0 a = t1; else b = t1; end k = k+1; t0 = t1; end x = t1; minf = subs(f,findsym(f),x); format short;